﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmProdutosProntos : Form
    {
        public frmProdutosProntos()
        {
            InitializeComponent();
        }

        Utilidades util = new Utilidades();

        //         private void CarregaCFOP(string CodigoCFOP)
        //         {
        //             using (SigosEntities Entidades = new SigosEntities())
        //             {
        //                 try
        //                 {
        //                     var CFOPs = Entidades.CFOP.Where(Cod => Cod.Codigo == CodigoCFOP).FirstOrDefault();
        //                     txtCFOPDescricao.Text = CFOPs.Descricao;
        //                     lblInformacao.Text = CFOPs.Informacao;
        //                     //cboCFOP.SelectedValue = "5102";
        //                 }
        //                 catch (System.Exception ex)
        //                 {
        //                     util.Erro("Não foi possivel selecionar a tabela de CFOP's");
        //                 }
        //             }
        //         }
        //         
        private void SalvaRegistro(string vProduto)
        {

            using (SiavEntities Entidades = new SiavEntities())
            {
                try
                {
                    if (vProduto == "")
                    {
                        bProgresso.Visible = true;
                        bProgresso.Value = 50;
                        Produtos2 vProdutos = new Produtos2();
                        vProdutos.CodigoBarras = txtCodigoBarras.Text;
                        vProdutos.Descricao = txtDescricao.Text;
                        vProdutos.Unidade = cboUnidade.Text;
                        vProdutos.Valor = decimal.Parse(txtValor.Text);
                        vProdutos.NCM = txtNCM.Text;
                        vProdutos.EXTIPI = txtEXTIPI.Text;
                        if (txtGenero.Text != "")
                        {
                            vProdutos.Genero = int.Parse(txtGenero.Text);
                        }
                        vProdutos.QtdEstoque = int.Parse(txtQtdEstoque.Text);
                        Entidades.AddObject("Produtos2", vProdutos);
                        Entidades.SaveChanges();
                        Utilidades.Informacao("Registro Salvo com Sucesso");
                        Utilidades.LimpaCampos(Controls);
                        bProgresso.Value = 100;
                        bProgresso.Visible = false;
                    }
                    else
                    {
                        int vProdutoI = int.Parse(vProduto);
                        bProgresso.Visible = true;
                        bProgresso.Value = 50;
                        var vProdutos = Entidades.Produtos2.Where(Prod => Prod.CodigoProduto == vProdutoI).FirstOrDefault();
                        vProdutos.CodigoBarras = txtCodigoBarras.Text;
                        vProdutos.Descricao = txtDescricao.Text;
                        vProdutos.Unidade = cboUnidade.Text;
                        vProdutos.Valor = decimal.Parse(txtValor.Text);
                        vProdutos.NCM = txtNCM.Text;
                        vProdutos.EXTIPI = txtEXTIPI.Text;
                        if (txtGenero.Text != "")
                        {
                            vProdutos.Genero = int.Parse(txtGenero.Text);
                        }
                        vProdutos.QtdEstoque = int.Parse(txtQtdEstoque.Text);
                        //Salvando os dados
                        Entidades.SaveChanges();
                        Utilidades.Informacao("Registro Atualizado com Sucesso");
                        Utilidades.LimpaCampos(Controls);
                        bProgresso.Value = 100;
                        bProgresso.Visible = false;
                    }
                }
                catch (Exception ex)
                {
                    Utilidades.Erro("Não foi possivel gravar os dados, verifique os campos e tente novamente, o erro foi: " + ex.Message);

                }

            }
        }

        private void ExcluirRegistro(string vIDRegistro)
        {
            if (vIDRegistro != "")
            {

                if (Utilidades.Excluir() == true)
                {
                    using (SiavEntities Entidades = new SiavEntities())
                    {
                        try
                        {
                            int CodigoProduto = int.Parse(vIDRegistro);
                            var Excluir = Entidades.Produtos2.Where(Pro => Pro.CodigoProduto == CodigoProduto).First();
                            Entidades.ObjectStateManager.ChangeObjectState(Excluir, EntityState.Modified);
                            Entidades.DeleteObject(Excluir);
                            Entidades.SaveChanges();
                            Utilidades.Informacao("Registro Excluido com sucesso");
                            Utilidades.LimpaCampos(Controls);
                        }
                        catch (Exception ex)
                        {
                            Utilidades.Erro("Não foi possivel excluir o registro, o erro foi: " + ex.Message);
                        }
                    }
                }
            }
            else
            {
                Utilidades.Erro("Antes de excluir um registro você deve seleciona-lo!");
            }
        }

        private void CarregaDadosBusca(string vIDProduto)
        {
            if (vIDProduto == "")
            {
                //util.Erro("Não foi possivel carrgar os dados do produto selecionado!");
            }
            else
            {

                using (SiavEntities Entidades = new SiavEntities())
                {
                    try
                    {
                        int CProduto = int.Parse(vIDProduto);
                        var Registro = Entidades.Produtos2.Where(Cod => Cod.CodigoProduto == CProduto).FirstOrDefault();
                        txtCodigoProduto.Text = Registro.CodigoProduto.ToString();
                        txtCodigoBarras.Text = Registro.CodigoBarras;
                        txtDescricao.Text = Registro.Descricao;
                        cboUnidade.SelectedItem = Registro.Unidade;
                        txtValor.Text = Registro.Valor.ToString();
                        txtNCM.Text = Registro.NCM;
                        txtEXTIPI.Text = Registro.EXTIPI;
                        txtGenero.Text = Registro.Genero.ToString();
                        txtQtdEstoque.Text = Registro.QtdEstoque.ToString();
                    }
                    catch (Exception ex)
                    {
                        Utilidades.Erro("Não foi possivel carrgar os dados do produto selecionado, o erro foi: " + ex.Message.ToString());
                    }
                }
            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Utilidades.LimpaCampos(Controls);
        }

        private void btnLocalizar_Click(object sender, EventArgs e)
        {
            using (frmBuscarProdutos BuscaProds = new frmBuscarProdutos())
            {
                BuscaProds.ShowDialog();
                CarregaDadosBusca(Utilidades.NumeroPedido);
                Utilidades.NumeroPedido = string.Empty;
                BuscaProds.Dispose();
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                SalvaRegistro(txtCodigoProduto.Text);
            }
            catch
            {

            }
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            ExcluirRegistro(txtCodigoProduto.Text);
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            if (Utilidades.Sair() == true)
            {
                Close();
            }
        }

        private void frmProdutosProntos_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F2:
                    btnNovo_Click(sender, e);
                    break;
                case Keys.F3:
                    btnLocalizar_Click(sender, e);
                    break;
                case Keys.F4:
                    btnSalvar_Click(sender, e);
                    break;
                case Keys.F5:
                    btnExcluir_Click(sender, e);
                    break;
                case Keys.F6:
                    btnSair_Click(sender, e);
                    break;
            }
        }
    }
}
